/*******************************************************************************************
 *  BulletRef.h
 *
 *  Creating and managing BulletRef object structures.
 *
 *******************************************************************************************/







/*******************************************************************************************
 *  INCLUDES :
 *******************************************************************************************/
#include "BulletMLConsts.h"
#include "BulletMLTypes.h"
#include "Bullet.h"







/*******************************************************************************************
 *  TYPE definitions :
 *******************************************************************************************/

/*****************************************************/
/* The BULLETREF object structure :                 */
/*****************************************************/
#ifndef _BULLETREF_STRUCT_
#define _BULLETREF_STRUCT_
typedef struct {

	ObjType		otype;						/* The object's type, as in the ... */
											/* ... BML type enum.               */

	char		*label;						/* The label of the refered bullet. */
	Bullet		*bullet;					/* Pointer to the refered bullet.   */

	int			paramsNum;					/* How many parameters?             */
	
	/* The parameters the refered ... */
	/* ... bullet might need.         */
	char		params[MAX_PARAMS][MAX_EXPRESSION_STR_LEN];

} BulletRef;
#endif







/*******************************************************************************************
 *  Function PROTOTYPES :
 *******************************************************************************************/

/* CONSTRUCTOR and DESTRUCTOR : */
BulletRef	*newBulletRef(void);			/* Creates an empty BulletRef object structure. */
void 		freeBulletRef(BulletRef *b);	/* Destroys an BulletRef object structure.      */ 


/* FILLING the BulletRef object structure : */
void 		setBulletRefLabel(BulletRef *b, char *l);
void 		pushBulletRefParam(BulletRef *b, char *p);
